package espectaculos;

import java.util.ArrayList;
import java.util.List;

import recital.Estadio;
import recital.Recital;
import artistas.ArtistaMusical;
import artistas.Solista;
import auxiliares.Date;

/**
 * TODO: description
 */
public class Festival extends Espectaculo {
    private List<ArtistaMusical> artistas;
    private Recital recital;

    // *******************//
    // ** Constructores **//
    // *******************//
    public Festival(String unNombre, final Recital unRecital) {
    	this.setNombre(unNombre);
        this.artistas = new ArrayList<ArtistaMusical>();
        this.recital = unRecital;
    }

    public Festival(String unNombre, final Recital unRecital, final List<ArtistaMusical> artistas) {
    	this.setNombre(unNombre);
        this.artistas = artistas;
        this.recital = unRecital;
    }

    // *************************//
    // ** Getters and Setters **//
    // *************************//
    public List<ArtistaMusical> getArtistas() {
        return this.artistas;
    }

    public void setArtistas(final List<ArtistaMusical> artistas) {
        this.artistas = artistas;
    }

    public Recital getRecital() {
        return this.recital;
    }

    public void setRecital(final Recital recital) {
        this.recital = recital;
    }

    // *************//
    // ** Metodos **//
    // *************//
    /**
     * Retorna la cantidad de entradas vendidas de un festival.
     * @return
     */
    @Override
	public int totalEntradasVendidas() {
		return this.getRecital().getEntradasVendidas();
	}
    
    /**
     * Agrega un ArtistaMusical a la lista de artistas.
     * @param unArtistaMusical
     */
    public void addArtistaMusical(final ArtistaMusical unArtistaMusical) {
        this.artistas.add(unArtistaMusical);
    }
    
    /**
     * Retorna la recaudacion total del Festival.
     * @return
     */
    public int recaudacionTotal(){
    	return this.recital.obtenerRecaudacion();
    }

    
    @Override
    public String toString() {
    	String enter = System.getProperty("line.separator");
		String result = super.toString() + " en " + recital.toString() + enter + "Musicos participantes:" + enter;
    	for (ArtistaMusical artista : this.artistas) {
    		if(artista != null)
    			result += " * " + artista.toString() + enter;
		}
		return result;
    }
}
